package cn.zane.designPattern.behaviorPatterns.chainOfResponsibilityPatterns.desion;

import cn.zane.designPattern.behaviorPatterns.chainOfResponsibilityPatterns.oldCode.AuthInfo;
import lombok.extern.slf4j.Slf4j;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author zane
 * @date 2025/01/22
 * @Description 责任链的核心部分。AuthLink next在于可以通过next方法获取下一个链路需要处理的节点。
 */
@Slf4j
public abstract class AuthLink {

    protected SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    protected String levelUserId;   // 级别人们ID
    protected String levelUserName; // 级别人员名称
    private AuthLink next;  // 责任链

    public AuthLink(String levelUserId, String levelUserName) {
        this.levelUserId = levelUserId;
        this.levelUserName = levelUserName;
    }

    public AuthLink next(){
        return next;
    }

    public AuthLink appendNext(AuthLink next){
        this.next = next;
        return this;
    }

    // 抽象方法，不同的审核级别处理不同的业务。
    public abstract AuthInfo doAuth(String userId, String orderId, Date authDate);
}
